查看原文
其他

【直播预约】下一代机密计算即将到来:性能比肩普通应用

田洪亮 金融级分布式架构 2021-08-10
随着 Intel 新一代数据中心级处理器 Ice Lake 的发布,由 Intel SGX 保护的可信应用的性能已经可以比肩普通应用,让我们来看看这一切是如何通过硬件进步与软件优化变为可能?

北京时间 2021 年 04 月 07 日凌晨,Intel 发布了第 3 代至强可拓展处理器(代号为 Ice Lake)。这是 Intel 首次发布基于 10nm 制程的数据中心芯片,带来了更快的单核性能(声称 20% 的 IPC 提升)、更多的核心数(最多 40 x 2 个),8 通道 DDR4 内存支持,以及面向 AI 和密码学的加速指令。

除了上述性能提升以外,Intel 还高调宣布了在 Ice Lake 上带来重要的安全特性——下一代 Intel SGX 技术。蚂蚁集团的安全计算团队在正式发布的数月前,通过与阿里云和 Intel 的合作,拿到了 Icelake 的测试芯片,并对其性能做了详尽的测评。因此,我们抢先给大家带来了干货满满的下一代 Intel SGX 的性能测评,并分享我们提出的软件性能优化方法。

本文包含三个部分:
1、下一代 Intel SGX 简介
2、下一代 Intel SGX 性能测试
3、下一代 Intel SGX 性能优化(在 Occlum 项目中)

本文的部分内容整理自作者在 OC3 会议(Open Confidential Computing Conference)上的技术演讲,补充了此前无法在 Intel 正式发布 Icelake 之前公开的实测数据。这是业界首个对下一代 Intel SGX 的性能评估和优化报告。

OC3 会议是机密计算领域开源项目的第一次线上大聚会:15 名演讲嘉宾,来自 Alibaba、Ant Group、Baidu、Intel、Google、Microsoft 等业界主流软硬件厂商;超过 650 名与会者,有来自 66 个国家和地区。蚂蚁集团的安全计算团队也受邀做了报告,介绍了我们在 Occlum 项目中如何通过引入多种异步技巧、在下一代 Intel SGX 取得 10X 性能提升的工作。

下一代 Intel SGX 简介

Intel Software Guard Extensions (SGX)是一种内存隔离技术,它可以将用户选定的程序和数据放入被称为飞地(Enclave)的私有内存中保护起来,使得任何飞地外的(潜在恶意的)软硬件都无法窥探或者窃取飞地内的信息。

SGX 是目前测试最充分的可信执行环境(TEE)技术之一,也是实现机密计算(Confidential Computing)的最主流技术手段,可应用于多方安全计算、云计算、区块链、隐私保护等诸多场景。

那 Icelake 平台上的下一代 Intel SGX(后简称“新 SGX”)带来了哪些改进呢?新 SGX 解决了旧 SGX 上的两大可扩展性问题:

1. 核数:旧 SGX 此前可用的最高端芯片是 Xeon E3,而该芯片只有 6 个物理核。显然,这个数量对于数据中心场景的负载来说是完全不够用的。而新 SGX 的 Icelake 平台支持至多 80 个物理核(160 个逻辑核),带来了 CPU 计算资源的跨越式提升!

2. SGX 上可信内存容量只有 256 MB。当这个容量无法满足飞地中的程序时,飞地对可信内存的访问延迟就会大幅增加( 1 - 2 个数量级),严重影响性能。而新 SGX 的 Icelake 平台将可信内存容量提升到了 1 TB,一举解决了旧 SGX 在大内存应用方面的困扰!

下表总结了旧 SGX(在 Pentium Silver 和 Xeon E3 上)和新 SGX 的差别:


但天下没有免费的午餐。新 SGX 在可信内存容量上的可扩展性提升是以牺牲一定的安全性为代价的:新 SGX 弱化了安全模型,放弃了对部分物理攻击的防御(即通过物理手段对内存做篡改或重放)。当然,新 SGX 对软件攻击的防御并未削弱。关于新 SGX 的设计与安全性的更详细信息可以见 Intel 的白皮书

总的来看,根据我们对实际应用场景的理解和与客户交流获得的反馈,我们认为新 SGX 提供了一个在安全和性能之间更切实际的权衡。

下一代 Intel SGX 性能测试

是骡子是马,牵出来溜溜。

理论上讲,新 SGX 内存访问的开销是大幅降低的。但其他方面的开销呢?是有改进,抑或是有倒退?带着这些疑问,我们测试了在三款不同的 Intel CPU 上 SGX 的性能开销,以横向比较新旧 SGX 的性能差异。

SGX主要有三方面的性能开销:

1. 可信内存访问。如前所述,当飞地的可信内存用量很大时,飞地的可信内存访问开销会大幅提升。

2. 动态内存管理(Encalve Dynamic Memory Management,简称 EDMM)。由于做了更多安全检查和处理,飞地中动态增减可信内存的开销要比飞地外增减普通内存更大。

3. 飞地切换(Enclave Switching)。CPU 进入或退出飞地的过程叫做飞地切换(可以类比进程的上下文切换)。出于安全原因,飞地切换会带来不小的性能开销。

我们的测试结果和结论如下。

可信内存访问开销

结论:新 SGX 的可信内存访问开销几乎可以忽略不计,远优于旧 SGX。

可信内存访问开销

结论:新 SGX 的动态内存管理开销一般略优于旧 SGX,但开销仍然不小。

飞地切换开销

结论:新 SGX 的飞地切换开销显著优于旧 SGX,但开销仍然不小。

下一代Intel SGX性能优化

根据上面的性能测试结果,我们看到虽然新 SGX 已经消灭了可信内存访问开销了,但在动态内存管理和飞地切换方面仍然有着不小的开销。前者会拖累飞地中的可信应用在内存管理方面的效率,而后者会大幅增加可信应的 I/O 开销( I/O 通常要触发飞地切换)。

那么,软件层面是否可以做一些优化,避免、缓解、或掩盖 SGX 的这些硬件开销?答案是肯定的。

蚂蚁集团在机密计算(包括 Intel SGX )方向有着深厚的技术积累。我们的一个代表性工作是 Occlum 项目(https://github.com/occlum/occlum),一款蚂蚁集团自主研发、适用于 SGX 的开源库操作系统,可以使得 Linux 应用无需修改即可运行于 SGX 中,大大降低了 SGX 的使用门槛。

Next-Gen Occlum的新设计

为了优化 Occlum 在新 SGX 上的性能表现,我们早在半年前就内部启动了 Next-Gen Occlum(简称 NGO)项目,探索可能的软件优化手段。最终,我们决定在 NGO 中采用一种“以异步为中心”的新设计重新架构 Occlum。“以异步为中心”的设计使得 Occlum 可以最大化的利用 Icelake 的大内存和多核心的硬件优势,提高执行的并行性,从而避免、降低或掩盖 SGX 的硬件开销。
图. NGO“以异步为中心”的设计体现在四个层面

图. NGO 基于协程的高效调度

图. NGO 基于 Linux io_uring 的高效异步 I/O

Next-Gen Occlum 的性能结果

根据我们的性能测试,NGO 采用的性能优化手段是非常有效的——NGO 在多项性能指标上达到——甚至超过了——Linux 的水平!

这里我们给出初步的性能测试结果,见下图。


结语

Icelake 平台上的下一代 SGX 带来了可扩展性的质变,对实际应用意义巨大。下一代 SGX 虽然未能消灭全部的硬件开销,但通过恰当的软件优化手段(如 Next-Gen Occlum 中所展示的),SGX 飞地中的可信应用性能已经可以比肩飞地外的普通应用。
Next-Gen Occlum 中的优化会于近期开源,并合并入 Occlum 的主干。欢迎持续关注Occlum项目(https://github.com/occlum/occlum)。

参考链接:
报告的 YouTube 视频:https://www.youtube.com/watch?v=3qQHrUEzFX4

 活动报名

SOFAChannel#20 《用安全计算保护关键业务》将于 05 月 19 日(周三) 19:00 开播。


随着全社会对隐私保护越来越关注,安全计算也成了近期的热点,本期将会介绍蚂蚁集团在安全计算方面的一些方法和实践,期待与你相见!


线上互动参与,有机会获得“SOFA 三周年纪念礼物“大奖,报名请点击“阅读原文”。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存